const express = require('express');
const router = express.Router();
const User = require('../models/User'); // 引入用户模型

// 1. 用户注册接口（POST /api/users/register）
router.post('/register', async (req, res) => {
  try {
    const { username, password, nickname, phone, email } = req.body;
    
    // 检查用户名或手机号是否已存在
    const existingUser = await User.findOne({ $or: [{ username }, { phone }] });
    if (existingUser) {
      return res.status(400).json({ 
        success: false, 
        message: '用户名或手机号已注册' 
      });
    }

    // 创建新用户（密码不加密，直接存储）
    const newUser = new User({ username, password, nickname, phone, email });
    await newUser.save();

    res.status(201).json({ 
      success: true, 
      message: '注册成功' 
    });
  } catch (err) {
    res.status(500).json({ 
      success: false, 
      message: '服务器错误', 
      error: err.message 
    });
  }
});

// 2. 用户登录接口（POST /api/users/login）
router.post('/login', async (req, res) => {
  try {
    const { username, password } = req.body;
    
    // 根据用户名查找用户
    const user = await User.findOne({ username });
    if (!user) {
      return res.status(401).json({ 
        success: false, 
        message: '用户不存在' 
      });
    }

    // 直接比较密码（不加密）
    if (user.password !== password) {
      return res.status(401).json({ 
        success: false, 
        message: '密码错误' 
      });
    }

    res.json({ 
      success: true, 
      message: '登录成功', 
      userId: user._id // 返回用户 ID 用于后续操作
    });
  } catch (err) {
    res.status(500).json({ 
      success: false, 
      message: '服务器错误', 
      error: err.message 
    });
  }
});

// 3. 获取用户信息接口（GET /api/users/{userId}）
router.get('/:userId', async (req, res) => {
  try {
    const user = await User.findById(req.params.userId);
    if (!user) {
      return res.status(404).json({ 
        success: false, 
        message: '用户不存在' 
      });
    }

    // 过滤敏感信息（如密码）
    const userInfo = { ...user._doc };
    delete userInfo.password;

    res.json({ 
      success: true, 
      data: userInfo 
    });
  } catch (err) {
    res.status(500).json({ 
      success: false, 
      message: '服务器错误', 
      error: err.message 
    });
  }
});
// 6. 获取用户积分明细 - GET /api/users/{userId}/point-details
router.get('/:userId/point-details', async (req, res) => {
  try {
    const user = await User.findById(req.params.userId);
    if (!user) return res.status(404).json({ success: false, message: '用户不存在' });
    res.json({ success: true, data: user.pointDetails });
  } catch (err) {
    res.status(500).json({ success: false, message: '服务器错误', error: err.message });
  }
});
// 7. 积分签到接口 - POST /api/users/{userId}/points/reward
router.post('/:userId/points/reward', async (req, res) => {
  try {
    const { rewardPoints } = req.body;
    const user = await User.findById(req.params.userId);
    if (!user) return res.status(404).json({ success: false, message: '用户不存在' });
    //查看在数据库今天是否已经签到过
    const today = new Date();
    const todayStart = new Date(today.getFullYear(), today.getMonth(), today.getDate());
    const todayEnd = new Date(todayStart.getTime() + 24 * 60 * 60 * 1000);
    const existingDetail = user.pointDetails.find(detail => {
      const detailTime = new Date(detail.time);
      return detailTime >= todayStart && detailTime < todayEnd;
    })

    if (existingDetail) {
      return res.status(400).json({ success: false, message: '今天已经签到过' });
    }

    user.points += rewardPoints;
    user.pointDetails.push({
      detailId: `detail_${Date.now()}`,
      change: rewardPoints,
      type: '签到奖励',
      time: new Date()
    });
    await user.save();

    res.json({ success: true, message: '积分奖励发放成功', data: user.points });
  } catch (err) {
    res.status(400).json({ success: false, message: '积分奖励失败', error: err.message });
  }
});
// 其他接口（如更新用户信息、地址管理等）可在此继续扩展...
// 4. 更新用户信息接口（PUT /api/users/{userId}）

module.exports = router;
